iT邦幫忙

2021 iThome 鐵人賽

DAY 7
0
自我挑戰組

展開JDK工具的30天應用之旅系列 第 7

Day7-JDK查看正在運行的Java進程工具:jps

  • 分享至 

  • xImage
  •  

前言

在介紹JDK有哪些工具時,第二大列應該是『故障排查、分析、監控和管理工具』,但我想先從監控工具jps、jstat這些比較基本的工具開始介紹,會比較好理解。

JPS介紹

jps全名:Java Virtual Machine Process Status Tool ,透過該指令查看系統內所有HotSpot虛擬機正在運行的進程。
p.s:透過該指令查到的PID與在Linux/Mac作業系統中下top指令查到的PID相同,代表進程的ID是唯一的。


指令介紹

jps [option] [hostid]

一樣可以透過在終端機下jps -help查看有哪些option可以使用。
注意!! 若直接下jps則會出現系統內所有HotSpot虛擬機正在運行的進程資訊,而非跟-help出現一樣的內容喔!!
https://ithelp.ithome.com.tw/upload/images/20210921/2014048173UQjd34pW.png

hostid介紹

指定特定主機,可以是ip地址和域名,也可指定具體協議,端口。

option 介紹

-q:僅顯示LVMID(Local Virtual Machine id),即PID,不顯示主類的名稱。


-m:列出傳遞給main方法的參數。
-l:列出應用程序主類完整的類名或jar包完整的路徑。
-v:列出虛擬機進程啟動時的JVM參數。
-V:輸出通過.hotsportrc或-XX:Flags-< filename >指定的JVM參數)(這參數我目前還有點不明白,這就不介紹了)

可以先在終端機內下jps看看目前有哪些進程正在運行中

若沒有任何正在運行的Java程序或者相關的ide沒有開著,那麼應該只會有一個,也就是jps。
https://ithelp.ithome.com.tw/upload/images/20210921/20140481LbBRYS1BRW.png
p.s 每下一次jps,它的PID就會改變喔!代表每次jps指令都是一個新的進程。


Step1.準備一個JpsTest.java檔案,程式碼如下:

package Controller;

public class JpsTest{

  public static void main(String[] args) throws InterruptedException{
    System.out.println("Start"+Arrays.toString(args));
    Thread.sleep(60000);
    System.out.println("The End");
  }
}

我寫了一段程式碼,將引數值輸出,接著讓目前的執行緒暫停執行一段時間,單位為毫秒(millisecond)

Step2.將程式碼進行編譯並且執行

編譯且執行,執行時我增加了一些參數

java -Xmx20m Controller/JpsTest Program arguments

編譯與執行的指令說明,請參考Day4-java語言編譯器:javac & 運行工具:java (上)
註:
-Xmx20m:這是要給予的VM arguments(系統屬性),Xmx 代表的意思是最大堆大小 ,mx是memory max的簡稱。
Program arguments:編譯時給予的args引數

Step3.輸入jps指令

  • 不帶有任何參數

https://ithelp.ithome.com.tw/upload/images/20210922/20140481V3XrNKGVJd.png

  • -q

jps -q

https://ithelp.ithome.com.tw/upload/images/20210922/20140481yLdx0isrFs.png

-q 這參數是只顯示PID資訊,故-q與其他參數放在一起也不會有任何效果
https://ithelp.ithome.com.tw/upload/images/20210922/20140481lxyM7aRgbT.png

  • -m

jps -m

https://ithelp.ithome.com.tw/upload/images/20210922/20140481AYM4eyUu2R.png

  • -l

jps -l

https://ithelp.ithome.com.tw/upload/images/20210922/20140481CtIQrhmxn3.png

運行時,如何指定class路徑,jps會顯示一樣的結果

java Controller.JpsTest

https://ithelp.ithome.com.tw/upload/images/20210922/20140481GJY64j91p0.png

  • -v

jps -v

https://ithelp.ithome.com.tw/upload/images/20210922/20140481Wtmtbg7TTb.png

補充:
多個參數可一起放置,將想顯示的資訊放在一起

jps -v -m

https://ithelp.ithome.com.tw/upload/images/20210922/201404814IMndKuzGR.png


上一篇
Day6-Java反編譯工具:javap
下一篇
Day8-JDK性能監控工具:jstat(上)
系列文
展開JDK工具的30天應用之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言